package com.szrt.java.day20170109.demo01;

import java.util.LinkedList;
import java.util.List;

import org.junit.Test;

/**
 * 正常使用List的缺点
 * 
 * 1：有编译警告(不是错误，也就是收不做任何处理可以得到正确的结果) 对于强迫症患者来说，就是一个噩梦
 * 2：正常情况下 我们加的元素一般来说都是同类的。但List默认什么都可以加。
 * 3：拿出来的东西默认是 Object
 * 
 * 如何解决?
 * 答：使用泛型
 * 
 * 泛型：制定具体的一个范围 制定一个具体的类型例：找女朋友，温柔的，可爱的，小鸟依人
 * 
 * 语法 <具体的类型>
 * 
 */

public class LinkedListTest {

	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Test
	public void add(){
		
		//1：创建这个ArrayList类的对象  调用其构造方法
		List list = new LinkedList();
		
		list.add("加菲猫A");
		list.add(new String ("加菲猫B"));  //两种写法相同
		list.add("哮天犬");
		list.add("手机"); //手机不应该放入宠物商店中
		
		String b = (String) list.get(1);
		System.out.println(b);
		
		int size = list.size();
		System.out.println("删除前，集合的长度："+size);
		
		//删除1个元素 element
		list.remove(3);
		int sizeAfter = list.size();
		System.out.println("删除后，集合的长度："+sizeAfter);
		
		//遍历
		System.out.println("修改之前-----------------");
		for(int i =0;i<sizeAfter;i++){
			Object obj = list.get(i);
		    System.out.println(obj);
		}
		
		//修改 把"加菲猫A" 修改为 " 修改为 "加菲猫AA"
		list.set(0, "加菲猫AA");
		System.out.println("修改之后-----------------");
		for(int i =0;i<sizeAfter;i++){
			Object obj = list.get(i);
		    System.out.println(obj);
		}
		
		/*Iterator it = array.iterator();
		
		//hasNext 如果遍历的对象下面还有元素，返回真；如果下面没有元素，返回假
		while(it.hasNext()){
			
			//it.next();返回的是Object对象
			//如果父类要转换成子类，要强制转化
			//Object obj = it.next();
			String obj = (String) it.next();
			System.out.println(obj);
			
		}*/
	}
	
}
